#include "ScnsTcs3472.c.h"

#if defined(SCNS_TCS3472_ENABLE)&&SCNS_TCS3472_ENABLE==1

#include "ScnsIic.h"
#include "ScnsMenu.h"
#include "ScnsSmctpExtOscilloscope.h"

ScnsStatus scnsBspTcs3472Init(ScnsTcs3472Enum bmpN)
{
    return SCNS_STATUS_OK;
}

ScnsStatus scnsBspTcs3472PostInit(ScnsTcs3472Enum bmpN)
{
    scnsMenuSetPage(5,"Tcs3472",NULL);
    scnsMenuAddConstStruct(5,scnsTcs3472Result[bmpN],r,,SCNS_TYPE_UINT8);
    scnsMenuAddConstStruct(5,scnsTcs3472Result[bmpN],g,,SCNS_TYPE_UINT8);
    scnsMenuAddConstStruct(5,scnsTcs3472Result[bmpN],b,,SCNS_TYPE_UINT8);
    scnsMenuAddConstStruct(5,scnsTcs3472Result[bmpN],wr,,SCNS_TYPE_FLOAT);
    scnsMenuAddConstStruct(5,scnsTcs3472Result[bmpN],wg,,SCNS_TYPE_FLOAT);
    scnsMenuAddConstStruct(5,scnsTcs3472Result[bmpN],wb,,SCNS_TYPE_FLOAT);
    return SCNS_STATUS_OK;
}

static const uint8 device[SCNS_TCS3472_MAX]={0X52};

ScnsStatus scnsBspTcs3472Write(ScnsTcs3472Enum bmpN,const uint8*addr,uint8 addrLen,const uint8*data,uint8 dataLen)
{
    return scnsIicWrite(SCNS_IIC_SCL_B7_SDA_B6,device[bmpN],addr,addrLen,data,dataLen);
}

ScnsStatus scnsBspTcs3472Read(ScnsTcs3472Enum bmpN,const uint8*addr,uint8 addrLen,uint8*data,uint8 dataLen)
{
    return scnsIicRead(SCNS_IIC_SCL_B7_SDA_B6,device[bmpN],addr,addrLen,data,dataLen);
}

void scnsBspTcs3472ResultUpdate(ScnsTcs3472Enum bmpN)
{
    if(scnsMenuCanPageSend(5))
    {
        scnsSmctpExtOscilloscopeSend(SCNS_SMCTP_CHANNEL_VISUAL_SCOPE,SCNS_SMCTP_CHANNEL_VISUAL_SCOPE,
            scnsTcs3472Result[bmpN].r,
            scnsTcs3472Result[bmpN].g,
            scnsTcs3472Result[bmpN].b,
            scnsTcs3472Result[bmpN].wr,
            scnsTcs3472Result[bmpN].wg,
            scnsTcs3472Result[bmpN].wb,
        );
    }
    if(scnsMenuCanPageDisplay(5))
    {
        scnsLcdFill(SCNS_LCD_LAYER_AUTO,(Point){0,200},8,8,scnsLcdColorARGBToScreen(0XFF,scnsTcs3472Result[bmpN].r,scnsTcs3472Result[bmpN].g,scnsTcs3472Result[bmpN].b),0);
    }
}

#endif
